package arrays;

/**
 * 题目：求数组连续子序列的和的最大值
 * y:
 *
 *
 * @Author Gavin
 * @date 2021.12.23 21:27
 */
public class array_7 {
    /**
     * 思路：
     *  1.暴力破解法是一种办法
     *  2.第二种办法
     *  首先定义一个变量存储最大值，然后我们可以知道如果一个数和其它
     *  数累计加如果加起来的和为负数，那么就可以直接跳过这个进行下一个累加了，
     *  因为如果下一个数是负数那就会越加越小，如果下一个数是正数，那么也会越加
     *  越小的
     *
     */
    //Time:O(n)
    public static int solution(int[] arrays){
        int max=0,curr=0;
        for (int i = 0; i < arrays.length; i++) {
            //只要curr不小于0，那么都连续子序列相加的和都会变大
           curr=curr<=0?arrays[i]:(curr+arrays[i]);
           max=Math.max(max,curr);
        }
        return max;
    }
}
